Ruby:Tutorial
Getting Ruby For Windows or Mac, you will want to head over to the official Download page, grab the appropriate installer, and go for it. On OSX, install it via DarwinPorts. Linux (Yeah, it gets its own section, it sucks, blah blah blah.) Easy version: Install it from the packages supplied by the distributor. Full version: * Many distributions should come with packages that you can easily install with the proper package management tool. ** Debian, Ubuntu, or other debian-based distributions: sudo apt-get install ruby irb rdoc ** If you want to install gems, you may need to install separate packages like e.g. rubygems, Ruby development packages, or other header packages for native extensions (database interfaces, etc.) * Otherwise see the Ruby download section for instructions How to Run Ruby There are several methods to run ruby code. The most straightforward is, of course, to write a script file, and then just run ruby myscript.rb some optional arguments On *nix, you can also make the script file executable, and use the hash-bang notation, so a script might look like this: #!/usr/bin/ruby puts 'This could be your code!' For quick experimentation, there is also an interactive shell-type interface, called irb (you may need to install it separately). An example session would look like this: $ irb irb(main):001:0> puts 'Hello, world!' Hello, world! => nil irb(main):002:0> Basic Concepts Hello World puts "Hello World" There is not much more to be said about it, so let us try a more involved example, showing some actual features of the language. #!/usr/bin/ruby # You guess what it does. def bottles(n) if n>0 then "#{n} bottle#{n>1 ? 's' : ''} of beer" else "no more bottles of beer" end end number_of_bottles = 99 number_of_bottles = ARGV0.to_i if ARGV.size > 0 number_of_bottles.downto(1) do |n| puts "#{bottles(n)} on the wall, #{bottles(n)};" puts " take one down, pass it around, #{bottles(n-1)} on the wall." end This small snippet demonstrates several features: * Function declarations, and return values. The last statement called in a function defines that function's return value. * String interpolation, * Command-line arguments, * Iterators Classes The following example demonstrates a Person class: class Person attr_accessor :name, :age, :height, :weight def initialize(name, age, height, weight) @name = name @age = age @height = height @weight = weight end def information print "Name: #{name}\nAge: #{age}\nHeight: #{height}\nWeight: #{weight}\n" end end One could use the class like so: smith = Person.new("Mr Smith", 20, 5.11, 13.5) smith.information Would output: Name: Mr Smith Age: 20 Height: 5.11 Weight: 13.5 Setters/Getters (or: Love the Assignment) Consider again the above example of a class. Now, what if we wanted to have a way to store the weight in kg, but provide setters/getters in US pounds? Just add the following methods to the class: def weight_in_lbs @weight / 0.4536 end def weight_in_lbs=(w) @weight = w * 0.4536 end Now you have created transparent access to Person#weight, doing unit conversion on the fly by accessing and assigning Person#weight_in_lbs as you would any "normal" attribute. (Alternatively, you could of course extend the numeric classes to provide #kg_to_lbs and other necessary methods doing the conversion for you...) Category:Ruby Category:Tutorial